dict1 = {'key1':'value1','张杨':454,'小子':666,
         (2,5):'小卡拉米',1:'未来星',2:'拼多多',3:'加多宝'}

# 字典的访问要用key作为下标，不能用序号做下标，下标相同时后面会覆盖前面
# 当字典的下标不存在时会报错,key不能用列表，value可以用任意值
print(dict1[2])
print(dict1[(2,5)])


# 求字典的长度为键值对的长度
print(len(dict1))

# 创建方法还有:创建对象的方法
dict2 = dict()
print(type(dict2))

# 修改字典
# 对指定的的key重新赋值
dict1[1]='大卡拉米'
print(dict1[1])

# 对不存在的key进行赋值，相当于新增,加在末尾
dict1[99999]='中卡拉米'
print(dict1)

# 删除指定的key，键值也会删除
del dict1['张杨']
print(dict1)

# dict 的方法
# for循环遍历出的是key的值
for i in dict1:
    print(i)

# 返回 dict_keys包装过的 key 值的列表
keys = dict1.keys()
print(type(keys))
print(keys)

# 返回 dict_values 包装过的 values 值的列表
values = dict1.values()
print(type(values))
print(values)

# 以元组方式返回的键值对
items = dict1.items()
print(type(items))
print(items)

# 通过key读取value
# 下文函数找不到会返回None，不会报错
print(dict1.get(1))
print(dict1.get(5))

# 拷贝新的字典
dictnew = dict1.copy()
print(dictnew)

# update 合并两个字典
dict1.update(dict2)
print(dict1)

# fromkeys 根据列表的内容生成字典的key，value默认为none，
# 可以通过的二个参数指定value
dictnew = dict1.fromkeys([1,2,3,6])
print(dictnew)

# 为key设置一个默认值，没有就返回原值
dict1.setdefault(5,'8899')
print(dict1.get(5))

# 返回key对应的nalue，同时删除字典里key对应的值
print(dict1.pop(3))
print(dict1)

# popitem 返回并删除最后的键值对
print(dict1.popitem())
print(dict1)

# 清空字典，字典的本体还存在，返回空字典
dict1.clear()
print(dict1)